package controlador;

import java.sql.SQLException;
import modelo.*;

public class Login {
	private DBController db;
	private static Login instanciaUnica = null;
	
	/**
	 * Verifica se nao ha nenhuma instancia em execucao desse controlador
	 * e cria um novo caso nao exista.
	 */
	public static Login getInstance() throws SQLException {
		if (instanciaUnica == null){
			instanciaUnica = new Login();			
		}
		return instanciaUnica;
	}
	
	private Login() throws SQLException  {
		db = DBController.getInstance();
	}
	
	/**
	 * Tenta fazer login do funcionario com o usuario e senha especificados.
	 * @throws EntradaNaoEncontradaException Login e/ou senha incorretos.
	 */
	public Funcionario login (String login, String senha) throws EntradaNaoEncontradaException {
		return db.getFuncionario(login, senha);
	}
	
	/**
	 * Apenas chamo o metodo do controlador, para que nao haja acesso direto ao
	 * controlador do banco de dados.
	 */
	public boolean isPrimeiroAcesso() {
		return db.isPrimeiroAcesso();
	}
	
	/**
	 * Metodo para cadastrar o primeiro gerente. So funciona se realmente nao
	 * houver nenhum cadastrado, isto e, se for o primeiro acesso.
	 */
	public void addFuncionario(Funcionario f) {
		if (isPrimeiroAcesso()) {
			try {
				db.addFuncionario(f);
			} catch (EntradaDuplicadaException e) {
				// Posso ignorar esta excecao, pois se ja foi verificado que eh
				// o primeiro acesso, sera impossivel haver uma entrada duplicada.
			}
		}
	}

}
